package cn.zxf.speedment_mysql.generated;

import cn.zxf.speedment_mysql.SpeedmentMysqlApplication;
import cn.zxf.speedment_mysql.SpeedmentMysqlApplicationBuilder;
import cn.zxf.speedment_mysql.SpeedmentMysqlApplicationImpl;
import cn.zxf.speedment_mysql.test_db.test_schema.position.PositionManagerImpl;
import cn.zxf.speedment_mysql.test_db.test_schema.position.PositionSqlAdapter;
import cn.zxf.speedment_mysql.test_db.test_schema.user.UserManagerImpl;
import cn.zxf.speedment_mysql.test_db.test_schema.user.UserSqlAdapter;
import com.speedment.common.annotation.GeneratedCode;
import com.speedment.common.injector.Injector;
import com.speedment.runtime.core.internal.AbstractApplicationBuilder;

/**
 * A generated base {@link
 * com.speedment.runtime.core.internal.AbstractApplicationBuilder} class for the
 * {@link com.speedment.runtime.config.Project} named hellospeedment.
 * <p>
 * This file has been automatically generated by Speedment. Any changes made to
 * it will be overwritten.
 * 
 * @author Speedment
 */
@GeneratedCode("Speedment")
public abstract class GeneratedSpeedmentMysqlApplicationBuilder extends AbstractApplicationBuilder<SpeedmentMysqlApplication, SpeedmentMysqlApplicationBuilder> {
    
    protected GeneratedSpeedmentMysqlApplicationBuilder() {
        super(SpeedmentMysqlApplicationImpl.class, GeneratedSpeedmentMysqlMetadata.class);
        withManager(PositionManagerImpl.class);
        withManager(UserManagerImpl.class);
        withComponent(PositionSqlAdapter.class);
        withComponent(UserSqlAdapter.class);
    }
    
    @Override
    public SpeedmentMysqlApplication build(Injector injector) {
        return injector.getOrThrow(SpeedmentMysqlApplication.class);
    }
}